// index.js
const app = getApp();
import QRCode from '../../static/utils/QRCode'
//主机地址
var host = "https://www.shijiayi.top:3000";
//定时器优化
var guhsInterval;

Page({
    data:{
        navHeight: app.globalData.navHeight, //导航栏高度
        navTop: app.globalData.navTop, //导航栏距顶部距离
        navObj: app.globalData.navObj, //胶囊的高度
        navObjWid: app.globalData.navObjWid, //胶囊宽度+距右距离
        name:"",
        idcard:"",
        year:"00",//年
        month:"00",
        day:"00",
        hours:"00",
        minutes:"00",
        seconds:"00",
        codeText:"",//健康码提示文字
        textStyle:""//健康码文字颜色
    },
    onLoad(){//页面加载时的声明周期函数
        this.userSubmit();//弹框函数
        this.getTime();//获取时间
    },
      /**
     * 生命周期函数--监听页面显示
     */
    onShow() {
        this.getHealthStatus();//每5秒去获取一次状态码信息
    },

    /**
     * 生命周期函数--监听页面隐藏
     */
    onHide() {
        clearInterval(guhsInterval);
    },
    passCardJump(){//通行卡页面跳转
        wx.navigateTo({
            url: '/pages/passcard/passcard',
          })
    },
    natrPageJump(){//核酸检测结果页面跳转
        wx.navigateTo({
          url: '/pages/natr/natr',
        })
    },
    getHealthStatus(){//获取用户健康码状态
        //每5秒执行一次
        guhsInterval = setInterval(() => {
             //从缓存中获取出昵称
            var nickName = wx.getStorageSync('nickName');
            //如果昵称不为空就执行请求
            if(nickName != ""){
                wx.request({
                    url: host+'/getUserHealthStatus?nickName='+nickName,
                    success:(data)=>{//成功时调用
                        var code = data.data.data;
                        if(code == 1){//绿码
                            this.qrCode("#5caf6b");
                            this.setData({
                                codeText:"绿码：健康状态为低风险",
                                textStyle:"#5caf6b"
                            })
                        }else if(code == 2){//黄码
                            this.qrCode("#fff82b");
                            this.setData({
                                codeText:"黄码：健康状态为中风险",
                                textStyle:"#fff82b"
                            })
                        }else if(code == 3){//红码
                            this.qrCode("#f81b3a");
                            this.setData({
                                codeText:"红码：健康状态为高风险",
                                textStyle:"#f81b3a"
                            })
                        }else if(code == 4){//灰码
                            this.qrCode("#828282");
                            this.setData({
                                codeText:"灰码：境外输入人员",
                                textStyle:"#828282"
                            })
                        }
                    },
                    fail:function(err){//失败时回调
        
                    }
                })
            }
        }, 5000);
       
        
    },
    getTime(){
        //每1000毫秒执行一次
        setInterval(() => {
            var date = new Date();//获取时间对象
            var hours = date.getHours();//获取小时
            var minutes = date.getMinutes();
            var seconds = date.getSeconds();
            var mymonth = date.getMonth()+1;
            var mydate = date.getDate();
            if(hours < 10){//判断是否小于10小时
                hours = "0" + hours;//在前面加个0
            }
            if(minutes < 10){
                minutes = "0" + minutes;
            }
            if(seconds < 10){
                seconds = "0" + seconds;
            }
            if(mymonth < 10){
                mymonth = "0" + mymonth;
            }
            if(mydate < 10){
                mydate = "0" + mydate;
            }
            this.setData({//设置给data
                year:date.getFullYear(),
                month:mymonth,
                day:mydate,
                hours:hours,
                minutes:minutes,
                seconds:seconds
            });
        }, 1000);
    },
    userSubmit(){//弹框
        //从缓存中获取
        var name = wx.getStorageSync('name');
        var idcard = wx.getStorageSync('idcard');
        if(name == "" || idcard == ""){
            var that = this;//复制一个this关键字
            wx.showModal({//弹框api
                title: '系统提示',
                content: '需要获取你的个人信息',
                success (res) {
                    if (res.confirm) {
                        //调用获取个人信息api
                        wx.getUserProfile({
                            desc: '获取你的账号信息展示健康码',
                            success:(data)=>{
                                console.log("用户同意了",data.userInfo.nickName);
                                //保存用户昵称
                                wx.setStorageSync('nickName', data.userInfo.nickName);
                                that.getUserInfo(data.userInfo.nickName);
                            }
                        })
                    } else if (res.cancel) {
                        console.log('用户点击取消')
                    }
                }
            })
        }else{
            //把缓存中的数据写回去
            this.setData({
                name:name,
                idcard:idcard
            })
        }

        
    },
    getUserInfo(nickName){//获取用户个人信息函数
        // http协议 主机地址  端口号  接口名
        // http://www.baidu.com/getUserInfo
        wx.request({
            url: host+'/getUserInfo?nickName='+nickName,
            success:(data)=>{//请求成功 200 404 500
                console.log("请求接口得到数据",data.data);
                //用*号打个码
                var name = data.data.name;
                var idcard = data.data.idCard;
                //把字符串转数组
                name = name.split("");
                idcard = idcard.split("");
                name[1] = "*";
                for(var i=0;i<idcard.length;i++){
                    if(i > 1 && i < 16){
                        idcard[i] = "*";
                    }
                }
                //数组转回成字符串
                name = name.join("");
                idcard = idcard.join("");

                //修改data里的数据
                this.setData({
                    name:name,
                    idcard:idcard
                })
                //把这个信息缓存在本地
                wx.setStorageSync('name', name);
                wx.setStorageSync('idcard', idcard);
                wx.setStorageSync('id', data.data.id);
            },
            fail:(err) =>{//请求失败
                console.log("接口异常",err);
            }
        })
    },
    qrCode(color){//用于渲染二维码的函数
        let qrcode = new QRCode('canvas', {
            text: "我是绿码，我骗你的",//内容
            width: 190,
            height: 190,
            colorDark: color,//前景色
            colorLight: "white",//后景色
            correctLevel : QRCode.CorrectLevel.H//二维码编码方式
        });
        console.log(qrcode);
    },
    scanCode(){//扫二维码函数
        //调用api
        wx.scanCode({
            onlyFromCamera: true,
            success:(data)=>{
                //控制台日志
                console.log("扫码成功",data.result);
                //JSON字符串转对象
                var scandata = JSON.parse(data.result);
                //地址
                var localtionName = scandata.name;
                //从缓存中获取出来id
                var id = wx.getStorageSync('id');

                wx.request({
                    url: host+'/postLocationCode',//主机地址加接口名
                    method:"POST",
                    data:{
                      "localtionName": localtionName,
                      "userId": id
                    },
                    success:(data)=>{//成功之后
                      wx.showToast({
                        title: '扫码成功',
                        icon: 'success',
                        duration: 2000
                      })
                    }
                })
            }
        })
    }
})